#五个元素 其中有一个元素是要导入图片 这个该如何操作
#定义对象库层 代码一段片就完蛋了
from utils import UtilsDriver,choise_channel
from base.mp.base import Base1,base_handle1
from selenium.webdriver.common.by import By
class PublishPage(Base1):
    def __init__(self):
        super().__init__()
        #标题元素
        self.title=By.XPATH,"//*[@placeholder='文章名称‘]"
        #注意有iframe也要把iframe当做一个元素 再根据body找
        #iframe 元素
        self.iframe=By.ID,"PUBKSDFHSF"#注意有的元素时藏在iframe里的 要写iframe的值
        #文章输入框里的内容
        self.content=By.CSS_SELECTOR,".MSG"
        #封面选择元素
        self.cover=By.XPATH,"fefwfwefwf"
        # 频道选择元素 频道选择有两个元素 一个是点击 一个是选择 点击可以写死 但是频道不能写实 可以写一个函数 什么函数 挑选元素的函数
        #先做点击元素
        self.clik=By.XPATH,"//*paceholder='请选择'"
        #发表按钮
        self.btn=By.CSS_SELECTOR,"lassss"
    def findtitle(self):
        self.sindt=self.wait1(self.title)
        return self.sindt#找到标题元素

    def findC(self):
        self.sindC=self.wait1(self.content)
        return self.sindC#找到内容元素
    def findiframe(self):
        self.sindi=self.wait1(self.iframe)
        return self.sindi#找到标题元素
    def findco(self):
        self.sindco=self.wait1(self.cover)
        return self.sindco#找到封面元素
    def findck(self):
        self.sindck=self.wait1(self.clik)
        return self.sindck#找到标题元素
    def findbtn(self):
        self.btn=self.wait1(self.btn)
        return self.btn
class publih1(base_handle1):#操作层
    def __init__(self):
        self.pubulish=PublishPage()
        super().__init__()
        #输入文章标题
    def input_title(self,title):
        self.input_text(self.pubulish.findtitle(),title)#title 不要将title写死 input_text从基类中获取
        #输入文章内容
    def input_content(self,content):
        #先打开iframe 先调用驱动先调用驱动
        UtilsDriver.Get_driver1().switch_to_frame(self.pubulish.findiframe())#先找到iframe的元素
        #在进行文章内容输入的操作
        self.input_text(self.pubulish.findC(),content)
        #跳出iframe 回到原点  记住这个命令
        UtilsDriver.Get_driver1().switch_to_default_content()
    #选择封面
    def input_cover(self):
        self.pubulish.findco().click()#封面是点击操作
    #选择频道 频道有很多选择 那么该如何实现呢 要封装方法 就相当于有很多复选框 你要如何选择复选框 这个就是比较关键的一个点 是吧
    def input_chanle(self,channel):
        #先调用utils的方法
        choise_channel(UtilsDriver.Get_driver1(),self.pubulish.findck(),channel)


        pass

    #点击发布按钮
    def click_publish_btn(self):
        self.pubulish.findbtn().click()

class publish:#业务层(256)
    def __init__(self,):
        self.publish_page=publih1()
    #定义执行业务的方法
    def publish_aritcle(self,title,content,channel):
        #输入标题
        self.publish_page.input_title(title)#标题不能写死 所以要放在参数里 但凡不能写死的东西都要放在参数里
        #输入内容
        self.publish_page.input_content(content)
        #输入封面
        self.publish_page.input_cover()
        #输入选择框
        self.publish_page.input_chanle(channel)
        #输入点击发布
        self.publish_page.click_publish_btn()









